package priv.tuyou.system.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;

import priv.tuyou.bo.AppData;
import priv.tuyou.bo.Page;
import priv.tuyou.constants.WebContext;
import priv.tuyou.dao.IDao;
import priv.tuyou.exception.ServiceException;
import priv.tuyou.system.dao.IArticleDao;
import priv.tuyou.system.po.Article;
import priv.tuyou.system.service.IArticleService;

/**
 * 系统菜单请求控制器
 * @author：涂有
 * @date 2016年12月21日 上午12:35:04
 */
@Controller
@RequestMapping("/article")
public class AdvertController {
	
	@Resource
	protected IDao dao;
	@Resource
	protected IArticleDao articleDao;
	
	@Resource
	protected IArticleService articleService;

	/**
	 * 进入新增或者编辑页面
	 * @author：涂有
	 * @date 2016年12月28日 下午10:43:47
	 * @param id
	 * @return
	 */
	@RequestMapping(value={"/add", "/edit"}, method=RequestMethod.GET)
	public ModelAndView addPage(Long id){
		
		ModelAndView mv = new ModelAndView("WEB-INF/jsp/manager/article/add");
		if(id != null){
			
			Article menu = dao.get(Article.class, id);
			mv.addObject("article", menu);
		}
		return mv;
	}
	
	/**
	 * 管理页面
	 * @author：涂有
	 * @date 2016年12月28日 下午10:44:06
	 * @return
	 */
	@RequestMapping(value="/manage", method=RequestMethod.GET)
	public ModelAndView managePage(){
		
		ModelAndView mv = new ModelAndView("WEB-INF/jsp/manager/article/manage");
		Page<Article> page = WebContext.getPage(Article.class);
		dao.pageQuery(Article.class, page);
		return mv;
	}
	
	/**
	 * 新增或编辑文章
	 * @author：涂有
	 * @date 2016年12月28日 下午10:44:57
	 * @param id
	 * @param title
	 * @param outline
	 * @param cover
	 * @param content
	 * @return
	 * @throws ServiceException
	 */
	@RequestMapping(value={"/add", "/edit"}, method=RequestMethod.POST)
	@ResponseBody
	public AppData add(Long id, String title, String outline, @RequestParam CommonsMultipartFile cover, String content) throws ServiceException{
		
		if(id == null){
			
			String coverStr = WebContext.storeFile(cover, Article.class);
			articleService.add(title, outline, coverStr, content);
			return new AppData(1, "新增成功");
		}else{
			
			String coverStr = WebContext.storeFile(cover, Article.class);
			articleService.update(id, title, outline, coverStr, content);
			return new AppData(1, "编辑成功");
		}
	}
	
	/**
	 * 删除文章
	 * @author：涂有
	 * @date 2016年12月28日 下午11:14:25
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete")
	@ResponseBody
	public AppData delete(Long id){
		
		dao.delete(Article.class, id);
		return new AppData(1, "删除成功");
	}
	
	/**
	 * 推荐文章
	 * @author：涂有
	 * @date 2016年12月28日 下午11:14:44
	 * @param id
	 * @param recommend 是否推荐
	 * @return
	 */
	@RequestMapping(value="/recommend")
	@ResponseBody
	public AppData recommend(Long id, boolean recommend){
		
		articleDao.recommend(id, recommend);
		return new AppData(1, recommend ? "推荐成功" : "取消推荐成功");
	}
}
